<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

</body>
<script>
  const list = [
    { id: '1001', pid: '',     name: '总裁办' },
    { id: '1002', pid: '',     name: '财务部' },
    { id: '1003', pid: '1001', name: '财务核算部'},
    { id: '1004', pid: '1003', name: '薪资管理部'},
    { id: '1005', pid: '',     name: '技术部'},
    { id: '1006', pid: '1002', name: 'Java研发部'}
  ]
  // 定义一个新对象
  const map ={}

  // 循环list
  list.forEach(item=>{
    // 给 list 数组里面 所有的对象，都添加一个 children 属性
    item.children = []
    map[item.id]=item
  })
  console.log(list);
  console.log(map);

  // 再定义一个新数组，这个用来当最后结果
  const treeList = []
  list.forEach(item=>{
    // 如果正在循环的这个对象，children 属性不为空
    if(item.pid){
      // 把 item.pid 添加为 item 的 parent 属性
      const parent = map[item.pid]
      // 把 item 添加到 parent 的子级
      parent.children.push(item)
    }else{
       // 如果正在循环的这个对象，children 属性是空
       // 就直接放进数组 （一级
      treeList.push(item)
    }
  })
  console.log(treeList);
</script>
</html>
